package models

// 执行器
type WorkerMysqlModel struct {
	ID          int64  `json:"id" gorm:"type:bigint;column:id" `                 // ID
	Name        string `json:"name" gorm:"varchar(200);column:name"`             // 名称
	Label       string `json:"label" gorm:"varchar(255);column:label"`           // 标签
	Info        string `json:"info" gorm:"varchar(255);column:info"`             // 执行器功能说明
	CreatedAt   int64  `json:"createdAt" gorm:"type:int;column:created_at"`      // 时间
	UpdatedAt   int64  `json:"updatedAt" gorm:"type:int;column:updated_at"`      // 更新时间
	Type        int    `json:"type" gorm:"type:tinyint;column:type"`             // 类型：1 内置(http,shell)，2 外部
	PushCommand string `json:"command" gorm:"varchar(1000);column:push_command"` // 推送 URL地址或shell命令
	IsDelete    int8   `json:"isDelete" gorm:"type:tinyint;column:is_delete"`    // 是否已经删除（自动删除 1月以前的）
}

func (sv *WorkerMysqlModel) TableName() string {
	return "cron_worker"
}

// 准备开始运行
type TaskReadyMysqlModel struct {
	ID           int64  `json:"id" gorm:"type:bigint;column:id" `                  // ID
	TaskID       int64  `json:"taskId" gorm:"type:bigint;column:task_id" `         // 任务ID
	Date         string `json:"date" gorm:"type:date;column:date"`                 // 开始运行时间
	ServerName   string `json:"serverName" gorm:"varchar(100);column:server_name"` // 执行服务器名称
	WorkerStatus int8   `json:"status" gorm:"type:tinyint;column:status"`          // 执行状态 ：0 待领，1 领取，2 开始执行 3 完成
	CreatedAt    int64  `json:"createdAt" gorm:"type:int;column:created_at"`       // 时间
	UpdatedAt    int64  `json:"updatedAt" gorm:"type:int;column:updated_at"`       // 更新时间
	IsDelete     int8   `json:"isDelete" gorm:"type:tinyint;column:is_delete"`     // 是否已经删除（自动删除 24小时以前的）
}

func (sv *TaskReadyMysqlModel) TableName() string {
	return "cron_ready_task"
}

// 完成待处理
type TaskFinishMysqlModel struct {
	ID           int64  `json:"id" gorm:"type:bigint;column:id" `              // ID
	TaskID       int64  `json:"taskId" gorm:"type:bigint;column:task_id" `     // 任务ID
	Status       int8   `json:"status" gorm:"type:tinyint;column:status"`      // 执行状态 ：0 待领，1 领取，2 完成
	CreatedAt    int64  `json:"createdAt" gorm:"type:int;column:created_at"`   // 时间
	UpdatedAt    int64  `json:"updatedAt" gorm:"type:int;column:updated_at"`   // 更新时间
	IsDelete     int8   `json:"isDelete" gorm:"type:tinyint;column:is_delete"` // 是否已经删除（自动删除 1小时以前的）
	Date         string `json:"date" gorm:"type:date;column:date"`
	ServerName   string `json:"serverName" gorm:"varchar(80);column:server_name"`
	WorkerStatus int    `json:"workerStatus" gorm:"tinyint;column:worker_status"` // worker 执行状态
}

func (sv *TaskFinishMysqlModel) TableName() string {
	return "cron_finish_task"
}

// 执行日志
type TaskLogMysqlModel struct {
	ID        int64  `json:"id" gorm:"type:bigint;column:id" `            // ID
	TaskID    int64  `json:"taskId" gorm:"type:bigint;column:task_id" `   // 任务ID
	CreatedAt int64  `json:"createdAt" gorm:"type:int;column:created_at"` // 时间
	DoStatus  int    `json:"doStatus" gorm:"tinyint;column:do_status"`    // 执行状态 0 没执行 , 1执行成功，2 执行中 ,3 失败
	Info      string `json:"info" gorm:"varchar(255);column:info"`        // 其它信息
	Date      string `json:"date" gorm:"date;column:date"`                // 时间 2022-07-11
}

func (sv *TaskLogMysqlModel) TableName() string {
	return "cron_task_log"
}

type ConfigMysqlModel struct {
	ID             int64  `json:"id" gorm:"type:bigint;column:id" `                           // ID
	Status         int    `json:"status" gorm:"tinyint;column:status"`                        // 状态 0 默认 , 1 启用
	Date           string `json:"date" gorm:"varchar(20);column:date"`                        // 时间 2022-07-11
	Config         string `json:"config" gorm:"varchar(1000);column:config"`                  //
	NotifyEmail    string `json:"notifyEmail" gorm:"varchar(500);column:notify_email"`        // email
	NotifyWebHook  string `json:"notifyWebHook" gorm:"varchar(500);column:notify_web_hook"`   // NotifyWebHook
	NotifyDingTalk string `json:"notifyDingTalk" gorm:"varchar(500);column:notify_ding_talk"` // NotifyDingTalk
	NotifyFeiShu   string `json:"notifyFeiShu" gorm:"varchar(500);column:notify_fei_shu"`     // notifyFeiShu
	Info           string `json:"info" gorm:"varchar(255);column:info"`                       // 其它信息
}

func (sv *ConfigMysqlModel) TableName() string {
	return "cron_config"
}
